home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / amok_lha / amok03.lha / IFFtoCode / Sources / Sprite.mod < prev    next >
Text File  |  1993-08-15  |  3KB  |  130 lines

  1. (*********************************************************************)
  2. (* 
  3.    :Program.       SpriteDemo.MOD
  4.    :Author.        Frank Staudte / Pit Burkhardt  
  5.    :Address      Hasenbergstr.91 7000 Stuttgart 1 W-Germany
  6.    :Phone.       ----
  7.    :shortcut.      [fst]+[pit]
  8.    :Version.       1.0
  9.    :Date.          07.04.88
  10.    :Copyright.   PD
  11.    :Language.      Modula-II
  12.    :Translator.  M2Amiga
  13.    :Imports.     -
  14.    :UpDate.     -
  15.    :Contents.     Little SimpleSprite Demo, Image-MODULE generated by IFFtoSprIm.
  16.    :Remark.     Thanks to [bne] and [mif]. 
  17.        
  18. **********************************************************************)
  19.  
  20. MODULE Sprite;
  21.                         
  22. FROM Arts         IMPORT TermProcedure;    
  23. FROM SYSTEM             IMPORT ADR, BITSET, CAST;
  24. FROM Heap               IMPORT AllocMem;
  25. FROM Hardware            IMPORT custom,Custom;    
  26. FROM Intuition        IMPORT NewScreen,WindowPtr,ScreenPtr,OpenScreen,
  27.                 CloseScreen,customScreen;
  28. FROM Graphics           IMPORT ViewPortPtr,SimpleSpritePtr,ViewModeSet,
  29.                   sprites, GetSprite,MoveSprite,FreeSprite,
  30.                                 SetRGB4,ChangeSprite;   
  31. FROM Img IMPORT        Imgheight,ImgPtr,AIR1,AIR2;(* Generated by IFFtoSprIm *)
  32.  
  33. TYPE
  34.   
  35. VAR
  36.   MyScreen            :NewScreen;
  37.   wp                            :WindowPtr;
  38.   sp                            :ScreenPtr;
  39.   ViewPort                      :ViewPortPtr;
  40.   SpPtr1                 :SimpleSpritePtr;
  41.   SprNr1                        :INTEGER;
  42.   wahr               :BOOLEAN;
  43.   Coll                :BITSET;
  44.   XPos,YPos            :INTEGER;
  45.   AddUp,i            :INTEGER;
  46.     
  47. PROCEDURE Testcollision (VAR wahr : BOOLEAN);
  48.   VAR 
  49.     Bits : BITSET;
  50.   BEGIN
  51.     Bits := CAST(BITSET,custom.clxdat);
  52.     IF 9 IN Bits THEN 
  53.       wahr := TRUE;
  54.     ELSE
  55.       wahr := FALSE;
  56.     END;
  57.     WHILE 9 IN Bits DO 
  58.       Bits := CAST(BITSET,custom.clxdat);
  59.     END;
  60. END Testcollision;   
  61.               
  62. PROCEDURE CleanUp;
  63.  BEGIN
  64.   FreeSprite(SprNr1);             
  65.   IF sp<>NIL THEN CloseScreen(sp) END;
  66.  END CleanUp;
  67.  
  68. BEGIN (* Main *)
  69.  
  70. TermProcedure(CleanUp);
  71.  
  72. WITH MyScreen DO
  73.   leftEdge:=0;
  74.   topEdge:=0;
  75.   width:=320;
  76.   height:=256;
  77.   depth:=2;
  78.   detailPen:=0;
  79.   blockPen:=1;
  80.   viewModes:=ViewModeSet{sprites};
  81.   type:=customScreen;
  82.   font:=NIL;
  83.   defaultTitle:=ADR("Touch that simpleSprite to exit");
  84.   gadgets:=NIL;
  85.   customBitMap:=NIL;
  86. END; (* With *)
  87.  
  88. AllocMem (SpPtr1,SIZE(SpPtr1^),FALSE);  
  89.  
  90. WITH SpPtr1^ DO                
  91.   posctldata:=ImgPtr[AIR1];
  92.   height:=Imgheight;
  93.   x:=100; y:=100;
  94.   num:=3;
  95. END;
  96.      
  97.   wp:=NIL;
  98.   sp:=OpenScreen(MyScreen);
  99.   IF sp#NIL THEN
  100.     ViewPort:=ADR(sp^.viewPort);
  101.     SetRGB4(ViewPort,0,0,0,0);
  102.     SetRGB4(ViewPort,21,12,10,12);
  103.     SetRGB4(ViewPort,22,0,0,15);
  104.     SetRGB4(ViewPort,23,15,12,15);
  105.     SprNr1:=GetSprite(SpPtr1,2);
  106.     AddUp:=0;
  107.     REPEAT  
  108.       wahr:=FALSE;
  109.       REPEAT                    
  110.         XPos:=320-sp^.mouseX;
  111.         YPos:=256-sp^.mouseY;
  112.         MoveSprite(ViewPort,SpPtr1,XPos,YPos);
  113.         Testcollision(wahr);
  114.       UNTIL wahr;                   
  115.       ChangeSprite(ViewPort,SpPtr1,ImgPtr[AIR2]);
  116.       FOR i:=0 TO 5000 DO END;
  117.       wahr:=FALSE;
  118.       REPEAT                    
  119.         XPos:=320-sp^.mouseX;
  120.         YPos:=256-sp^.mouseY;
  121.         MoveSprite(ViewPort,SpPtr1,XPos,YPos);
  122.         Testcollision(wahr);
  123.       UNTIL wahr;                   
  124.     ChangeSprite(ViewPort,SpPtr1,ImgPtr[AIR1]);
  125.     AddUp:=AddUp+1;
  126.     UNTIL AddUp>=100;
  127.   END;
  128. END Sprite.
  129.  
  130.